<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="utf-8">
<!-- whatsnew59.qdoc -->
  <title>What's New in Qt 5.9 | Qt 5.14</title>
  <link rel="stylesheet" type="text/css" href="style/offline-simple.css" />
  <script type="text/javascript">
    document.getElementsByTagName("link").item(0).setAttribute("href", "style/offline.css");
    // loading style sheet breaks anchors that were jumped to before
    // so force jumping to anchor again
    setTimeout(function() {
        var anchor = location.hash;
        // need to jump to different anchor first (e.g. none)
        location.hash = "#";
        setTimeout(function() {
            location.hash = anchor;
        }, 0);
    }, 0);
  </script>
</head>
<body>
<div class="header" id="qtdocheader">
  <div class="main">
    <div class="main-rounded">
      <div class="navigationbar">
        <table><tr>
<td ><a href="index.html">Qt 5.14</a></td><td >What's New in Qt 5.9</td></tr></table><table class="buildversion"><tr>
<td id="buildversion" width="100%" align="right">Qt 5.14.2 Reference Documentation</td>
        </tr></table>
      </div>
    </div>
<div class="content">
<div class="line">
<div class="content mainContent">
<div class="sidebar">
<div class="toc">
<h3><a name="toc">Contents</a></h3>
<ul>
<li class="level1"><a href="#new-features-in-qt-5-9">New Features in Qt 5.9</a></li>
<li class="level2"><a href="#qt-core-module">Qt Core Module</a></li>
<li class="level2"><a href="#qt-gui-module">Qt GUI Module</a></li>
<li class="level2"><a href="#qt-multimedia-module">Qt Multimedia Module</a></li>
<li class="level2"><a href="#qt-network-module">Qt Network Module</a></li>
<li class="level2"><a href="#qt-qml-module">Qt QML Module</a></li>
<li class="level2"><a href="#qt-quick-module">Qt Quick Module</a></li>
<li class="level2"><a href="#qt-quick-controls-2-module">Qt Quick Controls 2 Module</a></li>
<li class="level2"><a href="#qt-3d-module">Qt 3D Module</a></li>
<li class="level2"><a href="#qt-bluetooth-module">Qt Bluetooth Module</a></li>
<li class="level2"><a href="#qt-charts-module">Qt Charts Module</a></li>
<li class="level2"><a href="#qt-location-module">Qt Location Module</a></li>
<li class="level2"><a href="#qt-nfc-module">Qt NFC Module</a></li>
<li class="level2"><a href="#qt-serialbus-module">Qt SerialBus Module</a></li>
<li class="level2"><a href="#qt-virtual-keyboard-module">Qt Virtual Keyboard Module</a></li>
<li class="level2"><a href="#qt-webengine-module">Qt WebEngine Module</a></li>
<li class="level2"><a href="#qt-websockets-module">Qt WebSockets Module</a></li>
<li class="level2"><a href="#embedded-platforms">Embedded Platforms</a></li>
<li class="level1"><a href="#new-modules">New Modules</a></li>
<li class="level1"><a href="#technology-preview-modules">Technology Preview Modules</a></li>
<li class="level1"><a href="#platform-changes">Platform Changes</a></li>
<li class="level1"><a href="#deprecated-functionality">Deprecated Functionality</a></li>
<li class="level1"><a href="#list-of-api-changes">List of API Changes</a></li>
<li class="level1"><a href="#additions-to-other-qt-5-releases">Additions to Other Qt 5 Releases</a></li>
</ul>
</div>
<div class="sidebar-content" id="sidebar-content"></div></div>
<h1 class="title">What's New in Qt 5.9</h1>
<span class="subtitle"></span>
<!-- $$$whatsnew59.html-description -->
<div class="descr"> <a name="details"></a>
<p>Qt 5.9 is a long-term support (LTS) release.</p>
<a name="new-features-in-qt-5-9"></a>
<h2 id="new-features-in-qt-5-9">New Features in Qt 5.9</h2>
<a name="qt-core-module"></a>
<h3 id="qt-core-module">Qt Core Module</h3>
<ul>
<li>Added the <code>qfloat16 f</code> and <code>qfloat16 &amp;f</code> overload functions to the <a href="../qtcore/qdatastream.html">QDataStream</a> class for writing a floating point number to the stream and reading it from the stream.</li>
<li>Made the <a href="../qtcore/qprocessenvironment.html">QProcessEnvironment</a> class available on iOS, tvOS, watchOS, and <a href="vxworks.html">VxWorks</a>.</li>
<li><a href="../qtcore/qregularexpression.html">QRegularExpression</a> now requires the PCRE2 library version 10.20, or later. Support for the PCRE1 library was dropped. A copy of PCRE2 is shipped with Qt and will automatically be used on the platforms that lack it.</li>
<li>Added the <a href="../qtcore/qoperatingsystemversion.html">QOperatingSystemVersion</a> class to provide convenient access to the operating system and version.</li>
</ul>
<a name="qt-gui-module"></a>
<h3 id="qt-gui-module">Qt GUI Module</h3>
<ul>
<li>Made the <a href="../qtgui/qpainter.html">QPainter</a> class' GL engine functional with core profile OpenGL contexts.</li>
<li>Added the <a href="../qtgui/qimage.html#reinterpretAsFormat">QImage::reinterpretAsFormat</a>() function to change the image format without changing the data.</li>
<li>Added support for <i>compute shaders</i> in <a href="../qtgui/qopenglshader.html#ShaderTypeBit-enum">QOpenGLShader::ShaderType</a> and <a href="../qtgui/qopenglshaderprogram.html">QOpenGLShaderProgram</a> also with OpenGL ES 3.1 and newer.</li>
<li>Enabled stem-darkening and gamma-correction on OpenType fonts on platforms that use <a href="qt-embedded-fonts.html#freetype">FreeType</a>, if supported.</li>
</ul>
<a name="qt-multimedia-module"></a>
<h3 id="qt-multimedia-module">Qt Multimedia Module</h3>
<p>Added the following QML properties:</p>
<ul>
<li><a href="../qtmultimedia/qml-qtmultimedia-cameracapture.html#supportedResolutions-prop">CameraCapture.supportedResolutions</a></li>
<li><a href="../qtmultimedia/qml-qtmultimedia-cameraflash.html#supportedModes-prop">CameraFlash.supportedModes</a></li>
<li><a href="../qtmultimedia/qml-qtmultimedia-mediaplayer.html#notifyInterval-prop">MediaPlayer.notifyInterval</a> (also for the <a href="../qtmultimedia/qml-multimedia.html#audio">Audio</a> and <a href="../qtmultimedia/qml-multimedia.html#video">Video</a> types)</li>
<li><a href="../qtmultimedia/qml-qtmultimedia-mediaplayer.html#loops-prop">Video.loops</a></li>
</ul>
<a name="qt-network-module"></a>
<h3 id="qt-network-module">Qt Network Module</h3>
<ul>
<li>Added the <a href="../qtnetwork/qnetworkaccessmanager.html#addStrictTransportSecurityHosts">QNetworkAccessManager::addStrictTransportSecurityHosts</a>() function to support HSTS (HTTP Strict Transport Security) policies.</li>
<li>Added the <a href="../qtnetwork/qnetworkaccessmanager.html#redirectPolicy">QNetworkAccessManager::redirectPolicy</a>() function and the <a href="../qtnetwork/qnetworkrequest.html#RedirectPolicy-enum">QNetworkRequest::RedirectPolicy</a> enumeration to determine whether the Network Access API should automatically follow a HTTP redirect response.</li>
</ul>
<a name="qt-qml-module"></a>
<h3 id="qt-qml-module">Qt QML Module</h3>
<ul>
<li>Added support for ahead-of-time generation of QML type caches.</li>
</ul>
<a name="qt-quick-module"></a>
<h3 id="qt-quick-module">Qt Quick Module</h3>
<ul>
<li>Enabled caching OpenGL shader program binaries used by the Qt GUI module (<a href="../qtgui/qpainter.html">QPainter</a>'s GL paint engine) and the Qt Quick scenegraph on disk to improve application-startup and view-initialization times.</li>
<li>Added an <a href="../qtquick/qtquick-visualcanvas-adaptations.html#openvg">OpenVG</a> backend for Qt Quick.</li>
<li>Enabled making window-screen associations directly from QML by using <a href="../qtquick/qml-qtquick-window-window.html#screen-prop">Window.screen</a> and <a href="../qtqml/qml-qtqml-qt.html#application-prop">Qt.application.screens</a>. This enables creating multi-screen aware applications for desktop and embedded without involving C++ code.</li>
<li>Added a way to query information about the font actually used to render a <a href="../qtquick/qml-qtquick-text.html">Text</a> type.</li>
<li>Added an image provider that can share decoded image data and memory between processes.</li>
</ul>
<a name="qt-quick-controls-2-module"></a>
<h3 id="qt-quick-controls-2-module">Qt Quick Controls 2 Module</h3>
<ul>
<li>Introduced new QML types: <a href="../qtquickcontrols/qml-qtquick-controls2-delaybutton.html">DelayButton</a>, <a href="../qtquickcontrols/qml-qtquick-controls2-scrollview.html">ScrollView</a>.</li>
<li>Added multi-touch support.</li>
<li>Made the <a href="../qtquickcontrols/qml-qtquick-controls2-combobox.html">ComboBox</a> type editable.</li>
<li>Added the <a href="../qtquickcontrols/qml-qtquick-controls2-drawer.html#interactive-prop">interactive</a> property for making a <a href="../qtquickcontrols/qml-qtquick-controls2-drawer.html">Drawer</a> type non-interactive and persistent.</li>
<li>Enabled live value updates (by default) for the <a href="../qtquickcontrols/qml-qtquick-controls2-slider.html">Slider</a>, <a href="../qtquickcontrols/qml-qtquick-controls2-rangeslider.html">RangeSlider</a>, and <a href="../qtquickcontrols/qml-qtquick-controls2-dial.html">Dial</a> types.</li>
<li>Added dedicated notification signals for user interaction: <a href="../qtquickcontrols/qml-qtquick-controls2-abstractbutton.html#toggled-signal">AbstractButton::toggled</a>(), <a href="../qtquickcontrols/qml-qtquick-controls2-slider.html#moved-signal">Slider::moved</a>(), <a href="../qtquickcontrols/qml-qtquick-controls2-spinbox.html#valueModified-signal">SpinBox::valueModified</a>(), and so on.</li>
<li>Enabled incremental discrete scrolling with the <a href="../qtquickcontrols/qml-qtquick-controls2-scrollbar.html">ScrollBar</a> type.</li>
<li>Added enabling and disabling the swipe for the <a href="../qtquickcontrols/qml-qtquick-controls2-swipedelegate.html">SwipeDelegate</a> type. In addition, the swipe can now be opened programmatically.</li>
<li>Added support for the vertical orientation to the <a href="../qtquickcontrols/qml-qtquick-controls2-swipeview.html#orientation-prop">SwipeView.orientation</a> property.</li>
</ul>
<a name="qt-3d-module"></a>
<h3 id="qt-3d-module">Qt 3D Module</h3>
<ul>
<li>Added rendering Qt Quick 2 scenes to a texture and interacting with them within a 3D world.</li>
<li>Added a Technical Preview of a new animation subsystem that enables non-blocking, keyframe animations on the threadpool and exporting from animations from Blender.</li>
<li>Added Physics Based Rendering (PBR) material (<a href="../qt3d/qt3dextras-qmetalroughmaterial.html">QMetalRoughMaterial</a> and <a href="../qt3d/qt3dextras-qtexturedmetalroughmaterial.html">QTexturedMetalRoughMaterial</a>) to <a href="../qt3d/qt3dextras-module.html">Qt3DExtras</a> for improved appearance when used with environment maps.</li>
<li>Added 3D text support to <a href="../qt3d/qt3dextras-module.html">Qt3DExtras</a>.</li>
<li>Added the <a href="../qt3d/qml-qt3d-render-levelofdetail.html">LevelOfDetail</a> type to control the representation of an entity based on distance from the observer or size on the screen. It comes with a convenience loader class that loads different QML files.</li>
<li>Made the Mesh type plugin based. It comes with plugins for the Wavefront OBJ, PLY and FBX formats and makes it easy to add other formats.</li>
<li>Added distance field based 2D textured text that can be freely rotated but is based on planar geometry.</li>
</ul>
<a name="qt-bluetooth-module"></a>
<h3 id="qt-bluetooth-module">Qt Bluetooth Module</h3>
<ul>
<li>Added Classic Bluetooth support for WinRT.</li>
<li>Added Bluetooth LE Peripheral support for Android.</li>
</ul>
<a name="qt-charts-module"></a>
<h3 id="qt-charts-module">Qt Charts Module</h3>
<ul>
<li>Added support for minor grid lines for logarithmic axes.</li>
<li>Added options for legend marker shapes to <a href="../qtcharts/qlegend.html#MarkerShape-enum">QLegend::MarkerShape</a>.</li>
<li>Added support for adding more than one bar series to a chart.</li>
</ul>
<a name="qt-location-module"></a>
<h3 id="qt-location-module">Qt Location Module</h3>
<ul>
<li>Added support for rotating and tilting maps.</li>
<li>Added touch gestures for rotating and tilting maps.</li>
<li>Improved support for stacking multiple <a href="../qtlocation/qml-qtlocation-map.html">Map</a> types.</li>
<li>Added the <a href="../qtlocation/qml-qtlocation-mapcopyrightnotice.html">MapCopyrightNotice</a> type to flexibly position the copyrights of multiple map elements on top.</li>
<li>Enabled styling the HTML copyright using CSS.</li>
<li>Added support for handing the rendering of map items to the plugin.</li>
<li>Added the <i>MapboxGL</i> plugin that is based on the <code>mapbox-gl-native</code> mapping engine.</li>
<li>Added the <a href="../qtlocation/qml-qtlocation-map.html#fitViewportToVisibleMapItems-method">Map::fitViewportToVisibleMapItems</a>() method to only consider visible items when fitting the viewport.</li>
<li>Added the <a href="../qtlocation/qml-qtlocation-mapitemgroup.html">MapItemGroup</a> type to combine multiple map items in a separate QML file.</li>
<li>Added the <a href="../qtlocation/qml-qtlocation-map.html#fieldOfView-prop">Map.fieldOfView</a> property to control the camera's field of view when the map is tilted.</li>
<li>Added the MapParameter type to expose and control plugin-specific runtime functionality.</li>
</ul>
<a name="qt-nfc-module"></a>
<h3 id="qt-nfc-module">Qt NFC Module</h3>
<ul>
<li>Enabled using NFC when running as an Android service.</li>
<li>Added support for communicating with ISO-DEP, NFC-A, NFC-B, NFC-F, and NFC-V tags or smartcards, such as the German eID card, using <a href="../qtnfc/qnearfieldtarget.html#sendCommand">QNearFieldTarget::sendCommand</a>() on Android.</li>
</ul>
<a name="qt-serialbus-module"></a>
<h3 id="qt-serialbus-module">Qt SerialBus Module</h3>
<ul>
<li>Added the CAN FD Bitrate Switch (BRS) and Error State Indicator (ESI) flags to <a href="../qtserialbus/qcanbusframe.html">QCanBusFrame</a> (<a href="../qtserialbus/qcanbusframe.html#hasBitrateSwitch">QCanBusFrame::hasBitrateSwitch</a>() and <a href="../qtserialbus/qcanbusframe.html#hasErrorStateIndicator">QCanBusFrame::hasErrorStateIndicator</a>()).</li>
<li>Added <a href="../qtserialbus/qcanbusdeviceinfo.html">QCanBusDeviceInfo</a> for information about available CAN interfaces.</li>
<li>Added a plugin to support SYS-TEC electronic CAN adapters on Windows.</li>
</ul>
<a name="qt-virtual-keyboard-module"></a>
<h3 id="qt-virtual-keyboard-module">Qt Virtual Keyboard Module</h3>
<ul>
<li>Added support for selection handles for the dedicated (desktop) keyboard.</li>
<li>Changed the behavior of the shift handler to only activate caps lock if the shift key is double-clicked.</li>
<li>Added support for external keyboard layouts, which allows overriding and exclusion of the built-in keyboard layouts.</li>
<li>Added a language selection popup for faster selection of the input language.</li>
<li>Added support for the automatic selection of the only remaining word in the suggestion list.</li>
<li>Made the word candidate list automatically hidden when inactive.</li>
<li>Added full screen input mode.</li>
</ul>
<a name="qt-webengine-module"></a>
<h3 id="qt-webengine-module">Qt WebEngine Module</h3>
<ul>
<li>Based on Chromium 56.</li>
<li>Switched internally to the new Chromium build-system GN.</li>
<li>Added loading with HTTP POST.</li>
<li>Added support for user scripts with QQuickWebEngineProfiles and for using QQuickWebEngineUserScripts from C++.</li>
<li>DownloadItems now get a reason when they are interrupted or fail.</li>
</ul>
<a name="qt-websockets-module"></a>
<h3 id="qt-websockets-module">Qt WebSockets Module</h3>
<ul>
<li>Added support for handling external <a href="../qtnetwork/qtcpsocket.html">QTcpSocket</a> objects.</li>
</ul>
<a name="embedded-platforms"></a>
<h3 id="embedded-platforms">Embedded Platforms</h3>
<ul>
<li>Added experimental DRM dumb buffer support to the <code>linuxfb</code> platform plugin, to help devices that do not support the deprecated <code>fbdev</code> model (or have problems with <code>fbdev</code> emulation).</li>
<li>Added support for filtering and prediction of touch events to the <code>evdevtouch</code> plugin.</li>
</ul>
<a name="new-modules"></a>
<h2 id="new-modules">New Modules</h2>
<ul>
<li><a href="../qtgamepad/qtgamepad-index.html">Qt Gamepad</a> - Enables Qt gaming applications to respond to gamepad input.</li>
</ul>
<p>This module was previously released as a technology preview and is now a fully supported Qt add-on module.</p>
<a name="technology-preview-modules"></a>
<h2 id="technology-preview-modules">Technology Preview Modules</h2>
<ul>
<li><a href="../qtnetworkauth/qtnetworkauth-index.html">Qt Network Authorization</a> - Online authorization support with OAuth protocol, versions 1 and 2.</li>
<li><a href="../qtremoteobjects/qtremoteobjects-index.html#qt-remote-objects">Qt Remote Objects</a> - Sharing <a href="../qtcore/qobject.html">QObject</a> interfaces (signals, slots, and properties) between processes or devices,</li>
<li><a href="../qtspeech/qtspeech-index.html">Qt Speech</a> - Text to speech and speech recognition functionality. Currently only the text to speech features are released. Includes backends for several speech synthesizers on Windows, Linux, macOS, and Android.</li>
</ul>
<a name="platform-changes"></a>
<h2 id="platform-changes">Platform Changes</h2>
<ul>
<li>Removed support for WinRT on Windows 8.1&#x2e;</li>
<li>Debug builds on GCC platforms now use <code>-Og</code> optimizations by default. This can be disabled with the configure flag <code>-no-optimize-debug</code>.</li>
</ul>
<a name="deprecated-functionality"></a>
<h2 id="deprecated-functionality">Deprecated Functionality</h2>
<ul>
<li>Qt Script</li>
</ul>
<p>Deprecated modules are still included in Qt 5.9, but are considered for removal in future releases.</p>
<a name="list-of-api-changes"></a>
<h2 id="list-of-api-changes">List of API Changes</h2>
<p>The pages below contain a list of API changes in Qt 5.9:</p>
<ul>
<li><a href="newclasses59.html">New Classes and Functions in Qt 5.9</a></li>
<li><a href="obsoleteclasses.html">Obsolete Classes</a></li>
</ul>
<a name="additions-to-other-qt-5-releases"></a>
<h2 id="additions-to-other-qt-5-releases">Additions to Other Qt 5 Releases</h2>
<ul>
<li><a href="whatsnew58.html">What's New in Qt 5.8</a></li>
<li><a href="whatsnew57.html">What's New in Qt 5.7</a></li>
<li><a href="whatsnew56.html">What's New in Qt 5.6</a></li>
<li><a href="whatsnew55.html">What's New in Qt 5.5</a></li>
<li><a href="whatsnew54.html">What's New in Qt 5.4</a></li>
<li><a href="whatsnew53.html">What's New in Qt 5.3</a></li>
<li><a href="whatsnew52.html">What's New in Qt 5.2</a></li>
<li><a href="whatsnew51.html">What's New in Qt 5.1</a></li>
<li><a href="whatsnew50.html">What's New in Qt 5.0</a></li>
</ul>
</div>
<!-- @@@whatsnew59.html -->
        </div>
       </div>
   </div>
   </div>
</div>
<div class="footer">
   <p>
   <acronym title="Copyright">&copy;</acronym> 2020 The Qt Company Ltd.
   Documentation contributions included herein are the copyrights of
   their respective owners.<br/>    The documentation provided herein is licensed under the terms of the    <a href="http://www.gnu.org/licenses/fdl.html">GNU Free Documentation    License version 1.3</a> as published by the Free Software Foundation.<br/>    Qt and respective logos are trademarks of The Qt Company Ltd.     in Finland and/or other countries worldwide. All other trademarks are property
   of their respective owners. </p>
</div>
</body>
</html>
